const { session } = require('electron').remote;
const fs = require('fs');
const request = require('./node_modules/superagent');
const http = require('http');
const ffmetadata = require("ffmetadata");
//const request = require('superagent');
//const { search } = require('superagent');

const filter = {
    urls:['https://app.onenine.cc/m/api/search']
};

let cookie = '';
//window.searchList=[{name:'xxx'}];

window.hookSearch=function(call){
    session.defaultSession.webRequest.onBeforeRequest(filter,function(d,callback){
        search(d.uploadData[0].bytes.toString(),call);
        callback({ requestHeaders: d.requestHeaders });
    });
}

window.search = function(data,callback){
    request.post(filter.urls[0]).send(data).then(res=>{
        let obj = JSON.parse(res.text);
        obj.data.list.forEach((r)=>{
            r.selected = !!r.url_flac;
            //r.selected = false;
        });
        //window.searchList = obj.data.list;
        //console.log(window.searchList);
        callback(obj.data.list);
    })
}

window.downLoad=function(item, res, rej, album){
    let url = item.url_flac || item.url_320 || item.url_128 || item.url_m4a;
    url = url.replace('https','http');
    const savePath = `F:\\音乐\\${item.name.replace(/[\\\|\/\:\*\?"<>]/g,'')} - ${item.artist}.${item.url_flac?'flac':'mp3'}`;
    //downMusic(url,savePath,item);


    const file = fs.createWriteStream(savePath);

    // http.get(url, (res)=>{
    //     console.log(res);
    //     // if(res.statusCode !== 200){
    //     //   item.download = false;
    //     //   return;
    //     // }
      
    //     res.on('end', ()=>{
    //         item.download = true;
    //     });
      
    //     // 进度、超时等
      
    //     file.on('finish', ()=>{
    //         console.log('finish');
    //       file.close();
    //     }).on('error', (err)=>{
    //         console.log(err);
    //       fs.unlink(savePath);
    //     });
      
    //     res.pipe(file);
    //   });

    request(url).pipe(file).on("close", (err)=> {
        if(err){
            item.download = false;
            rej();
        }else{
            ffmetadata.write(savePath,{artist:item.artist,title:item.name,album:album},(err)=>{
                if(err){
                    item.download = false;
                    rej();
                }else{
                    item.download = true;
                    res();
                }
                
            })
            // item.download = true;
            // res();
        }
    });
    // ffmetadata.read("F:\\音乐\\Mojito - 周杰伦.flac", function(err, data) {
    //     if (err) console.error("Error reading metadata", err);
    //     else console.log(data);
    // });
    //ffmetadata.write("F:\\音乐\\说好不哭 (with 五月天阿信) - 周杰伦.flac",{artist:'xx'},()=>{});
    // request.get(url).end((e,resp)=>{
    //     console.log(resp);
    //     if(e){
    //         item.download = false;
    //         return;
    //     }

    //     fs.writeFile(`F:\\音乐\\${item.name} - ${item.artist}.${item.url_flac?'flac':'mp3'}`,resp.body,'binary',(e)=>{
    //         if(e){
    //             item.download = false;
    //             console.error(e);
    //             return;
    //         }
    //         item.download = true;
    //         console.log(item.name);
    //     })
    // })
}

function downMusic(url, savePath,item){
    console.log(url);
    http.get(url, (res)=>{
        if(res.statusCode !== 200){
          item.download = false;
          return;
        }
      
        res.on('end', ()=>{
            item.download = true;
        });
      
        // 进度、超时等
      
        file.on('finish', ()=>{
          file.close();
        }).on('error', (err)=>{
          fs.unlink(dest);
        });
      
        res.pipe(file);
      });


    // request.get(url).end((e,resp)=>{
    //     console.log(resp);
    //     if(e){
    //         item.download = false;
    //         return;
    //     }
    //     if(resp.redirects.length){
    //         downMusic(resp.redirects[0].replace('https','http'),savePath,item);
    //     }else{
    //         fs.writeFile(savePath,resp.body,'binary',(e)=>{
    //             if(e){
    //                 item.download = false;
    //                 console.error(e);
    //                 return;
    //             }
    //             item.download = true;
    //             console.log(item.name);
    //         })
    //     }
    // })
}

window.getCookies = function (callback, args) {
    session.defaultSession.cookies.get({ url: 'https://xms.be.xiaomi.com' })
        .then((cookies) => {
            let c = [];
            for (let cookie of cookies) {
                c.push(`${cookie.name}=${cookie.value}`);
            }
            cookie = c.join('; ');
            //console.log(cookie);
            if(callback)
                callback(...args);
        }).catch((error) => {
            console.log(error)
        });
}